package com.refactor.practice;

import java.util.Enumeration;
import java.util.Vector;

public class Customer {
	private String _name;
	private Vector _rentals;

	public Customer(String _name, Vector _rentals) {
		this._name = _name;
		this._rentals = _rentals;
	}

	public String getName() {
		return _name;
	}

	public void addRental(Rental arg) {
		_rentals.add(arg);
	}

	public String statement() {
		Enumeration rentals = _rentals.elements();
		String result = "Rental Record for " + getName() + "\n";
		double totalChargeAmt = 0d;
		int totalFrequentRenterPoints=0;
		while (rentals.hasMoreElements()) {
			Rental each = (Rental) rentals.nextElement();
			result += "\t" + each.getMovie().getTitle() + "\t" + String.valueOf(each.getChargeAmt()) + "\n";

			totalChargeAmt+=each.getChargeAmt();
			totalFrequentRenterPoints+=each.getFrequentRenterPoints();
		}
		//add footer lines
		result += "Amount owed is " + String.valueOf(totalChargeAmt) + "\n";
		result += "You earned " + String.valueOf(totalFrequentRenterPoints) +
				" frequent renter points";
		return result;

	}

	public double getTotalChargeAmt(){
		double totalChargeAmt = 0d;
		Enumeration rentals = _rentals.elements();
		while (rentals.hasMoreElements()) {
			Rental each = (Rental) rentals.nextElement();

			totalChargeAmt+=each.getChargeAmt();
		}
		return totalChargeAmt;
	}

	public int totalFrequentRenterPoints(){
		int totalFrequentRenterPoints=0;
		Enumeration rentals = _rentals.elements();
		while (rentals.hasMoreElements()) {
			Rental each = (Rental) rentals.nextElement();
			totalFrequentRenterPoints+=each.getFrequentRenterPoints();
		}
		return totalFrequentRenterPoints;
	}


//	public String statement() {
//		double totalAmount = 0;
//		int frequentRenterPoints = 0;
//		Enumeration rentals = _rentals.elements();
//		String result = "Rental Record for " + getName() + "\n";
//		while (rentals.hasMoreElements()) {
//			double thisAmount = 0D;
//			Rental each = (Rental) rentals.nextElement();
//
//			//determine amounts for each line
//			switch (each.getMovie().getPriceCode()) {
//				case Movie.REGULAR:
//					thisAmount += 2;
//					if (each.getDayRented() > 2) {
//						thisAmount += (each.getDayRented() - 2) * 1.5;
//					}
//					break;
//				case Movie.NEW_RELEASE:
//					thisAmount += each.getDayRented() * 3;
//					break;
//				case Movie.CHILDRENS:
//					thisAmount += 1.5;
//					if (each.getDayRented() > 3) {
//						thisAmount += (each.getDayRented() - 3) * 1.5;
//					}
//					break;
//			}
//			//add frequent renter points
//			frequentRenterPoints++;
//			//add bonus for a two day new release rental
//			if ((each.getMovie().getPriceCode() == Movie.NEW_RELEASE) &&
//					each.getDayRented() > 1) {
//				frequentRenterPoints++;
//			}
//
//			//show figures for this rental
//			result += "\t" + each.getMovie().getTitle() +
//					"\t" + String.valueOf(thisAmount) + "\n";
//			totalAmount += thisAmount;
//		}
//		//add footer lines
//		result += "Amount owed is " + String.valueOf(totalAmount) + "\n";
//		result += "You earned" + String.valueOf(frequentRenterPoints) +
//				" frequent renter points";
//		return result;
//	}
}
